package com.kuyun.base.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.kuyun.base.model.BaseDictionary;
import com.kuyun.base.model.ZtreeBean;

/**
 * 基础字典DAO接口
 * 
 * @author 王坤
 *
 * @date 2016年6月18日下午8:16:32
 *
 */
public interface BaseDictionaryMapper {

	/**
	 * 获取字典信息树
	 * 
	 * @author 王坤
	 * 
	 */
	public List<ZtreeBean> getDictionaryTree();

	/**
	 * 基础字典对象增加
	 */
	public int insertDictionary(BaseDictionary baseDictionary);

	/**
	 * 基础字典对象更新
	 */
	public int updateDictionary(BaseDictionary baseDictionary);

	/**
	 * 查询字典信息列表
	 */
	public List<BaseDictionary> queryDictionary();

	/**
	 * 根据ID查询字典信息
	 */
	public BaseDictionary findById(String id);

	/**
	 * 根据CODE查询字典对象
	 * 
	 * @author 唐靖
	 *
	 * @date 2016年6月25日下午2:40:07
	 *
	 * @param dicPrivilegeTypeMenu
	 * @return
	 */
	public BaseDictionary findByCode(String dicPrivilegeTypeMenu);

	/**
	 * 根据Parent查询字典对象
	 * 
	 * @author 王坤
	 * 
	 */
	public List<BaseDictionary> findByParentCode(@Param("pageSize") int pageSize, @Param("start") int pageNumber,
			@Param("parentId") String parentId, @Param("search") String search);

	/**
	 * 根据Parent查询字典信息总量
	 * 
	 * @author 王坤
	 * 
	 */
	public Integer findByParentCodeCount(@Param("parentId") String parentId, @Param("search") String search);

	/**
	 * 根据Parent查询子节点
	 */
	public Integer findSonDic(@Param("parentId") String parentId);

	/**
	 * 判断code是否重复
	 */
	public Integer checkCode(BaseDictionary basedictionary);

	/**
	 * * 删除字典信息
	 * 
	 * @param id
	 */
	public void deleteDic(@Param("id") String id);

	/**
	 * 根据父级字典code获取子集id及code
	 * 
	 * @author 史梁辰
	 *
	 * @date 2016-7-9下午11:04:38
	 *
	 * @param code
	 * @return
	 */
	@Deprecated
	public List<BaseDictionary> getDicByParentCode(@Param("value") String code);

	/**
	 * 上边的方法，code无论传什么，参数都是USER_TYPE,莫名其妙，重写一个
	 * 
	 * @author 史梁辰
	 *
	 * @date 2016-7-9下午11:04:38
	 *
	 * @param code
	 * @return
	 */
	public List<BaseDictionary> getDicByParentCodeAll(@Param("code") String code);
	
	/**
	 * 获取字典的名称
	 * 
	 * @author 史梁辰
	 *
	 * @date 2016-7-9下午11:04:38
	 *
	 * @param code
	 * @return
	 */
	public List<String> getDicNameByParentCode(@Param("code") String code);
}
